The present disclosure relates generally to a method for providing a meta-data programming language level interface and in particular, to a method for providing a meta-data programming language interface that may be accessed during program runtime.
Today's Internet driven economy has accelerated users' expectations for unfettered access to information resources and transparent data exchange among applications. One of the key issues limiting data interoperability today is that of incompatible meta-data. Meta-data is information about other data, or simply data about data. Meta-data is typically utilized by tools, databases, applications and other information processes to define the structure and meaning of data objects. Unfortunately, most applications are designed with proprietary schemes for modeling meta-data. Applications that define data using different semantics, structures and syntax are difficult to integrate, impeding the free flow of information access across application boundaries. This lack of meta-data interoperability hampers the development and efficient deployment of numerous business solutions (e.g., data warehousing, business intelligence, software development).
The Common Object Request Broker Architecture (CORBA) specification enforces a language neutral interface, or meta-data, definition for remote distributed object services. There are at least two ways in which a CORBA enabled object or service can be defined. First, by defining a distributed service's interface in an interface definition language (IDL) and deriving each language level interface via an IDL compiler for each language. Second, a CORBA enabled object or service may be defined by taking an existing service defined already in a particular programming language (e.g., Java, C++, Ada) and constructing a language neutral interface definition from the programming language level interface. In the second scenario, a particular programming language level interface must be examined in a purely abstract manner without any programming language specific validation of referenced types in an interface definition so that a language neutral interface definition can be derived from it.
Currently, many object-oriented programming languages define an interface and/or abstract class definition that describes the API provided by a program module service. This is done to clearly separate the abstract interface from the implementation class that implements one or more of the abstract interface APIs. This type of programming separation technique allows developers to provide distributed objects that expose their remote interfaces in a purely abstract manner. This allows distributed clients of the distributed objects to use that abstract interface information to learn about the service. This information may be utilized for many purposes including dynamic method invocation, client-side proxy of target service generation and client-side tooling for distributed object services. But currently, in order to achieve such interface to implementation separation in a distributed environment, the developer would be required to take the existing interface definitions already defined at its language level and redefine them as distributed object definitions and work back down into the language level to piece them together.